package simonby.top.annualring.domain.repository;

import simonby.top.annualring.domain.model.FamilyMember;
import java.util.List;
import java.util.Optional;

/**
 * 家族成员仓储接口
 * 定义家族成员相关的数据访问操作
 */
public interface FamilyMemberRepository {
    /**
     * 保存家族成员
     * @param member 家族成员实体
     * @return 保存后的家族成员
     */
    FamilyMember save(FamilyMember member);

    /**
     * 根据ID查找家族成员
     * @param id 成员ID
     * @return 家族成员对象
     */
    Optional<FamilyMember> findById(Long id);

    /**
     * 根据家族树ID查找所有成员
     * @param familyTreeId 家族树ID
     * @return 家族成员列表
     */
    List<FamilyMember> findByFamilyTreeId(Long familyTreeId);

    /**
     * 查找所有家族成员
     * @return 家族成员列表
     */
    List<FamilyMember> findAll();

    /**
     * 删除家族成员
     * @param id 成员ID
     */
    void deleteById(Long id);

    /**
     * 根据姓名查找家族成员
     * @param name 姓名
     * @return 家族成员列表
     */
    List<FamilyMember> findByName(String name);
}